/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import java.math.BigDecimal;

/**
 *
 * @author DELL
 */
public class Aspirante extends Usuario {

    private boolean estado;
    private Integer institucionId;
    private Double promedio;
    private Boolean datosCompletos;
    // Los siguientes atributos son usados solo por el controlador y no tienen
    // nada que ver con el modelo.
    private String promedioParteEntera;
    private String promedioParteDecimal;

    public Boolean getDatosCompletos() {
        return this.datosCompletos;
    }

    public void setDatosCompletos(Boolean datosCompletos) {
        this.datosCompletos = datosCompletos;
    }

    @Override
    public String toString() {
        return "Aspirante{" + "estado=" + estado + ", institucionId=" + institucionId + ", promedio=" + promedio + '}';
    }

    public Aspirante() {
    }

    public boolean isEstado() {
        return estado;
    }


    /* Limpia los atributos de this para reiniciar
     * los campos de los formularios donde aparece el bean
     */
    public void cleanAttributes() {
        super.cleanAttributes();
        setInstitucionId(0);
        this.promedio = null;
        this.promedioParteDecimal = "";
        this.promedioParteEntera = "";
    }

    public String consultarAspi() {
        String msg = super.consultar() + (this.institucionId == 0 ? "" : "institucionId = " + "\'" + this.institucionId + "'");
        return msg;
    }

    @Override
    public boolean hasValidAtts() {
        if (super.hasValidAtts()) {
            if (getPromedio() != null && (getPromedio() < 0 || getPromedio() > 20)) {
                System.out.println("Promedio invalido");
                return false;
            }
        } else {
            return false;
        }
        return true;
    }

    public String getPromedioParteDecimal() {
        return (promedioParteDecimal == null || promedioParteDecimal.equals("0") ? "" : promedioParteDecimal);
    }

    public String getPromedioParteEntera() {
        return (promedioParteEntera == null || promedioParteEntera.equals("0") ? "" : promedioParteEntera);
    }

    public Integer getInstitucionId() {
        return institucionId;
    }

    public void setInstitucionId(Integer id_institucion) {
        this.institucionId = id_institucion;
    }

    public Double getPromedio() {

        if ((promedioParteEntera != null && !promedioParteEntera.trim().isEmpty())
                || (promedioParteDecimal != null && !promedioParteDecimal.trim().isEmpty())) {
            try {
                promedio = Double.parseDouble(promedioParteEntera + "." + promedioParteDecimal);
                //System.out.println(promedioParteDecimal);
            } catch (NumberFormatException e) {
                promedio = null;
            }
        }
        if (promedio == null || promedio == 0.0) {
            return null;
        }
        return promedio;
    }

    public void setPromedio(Double promedio) {
        this.promedio = promedio;
        String promediostr = this.promedio + "";
        String[] tokens = null;

        tokens = promediostr.split("\\.");
        if (this.promedio != null && tokens[0] != null && tokens[1] != null) {
            this.promedioParteEntera = tokens[0];

            this.promedioParteDecimal = tokens[1];
        }
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public void setPromedioParteDecimal(String promedioParteDecimal) {
        this.promedioParteDecimal = promedioParteDecimal;
    }

    public void setPromedioParteEntera(String promedioParteEntera) {
        this.promedioParteEntera = promedioParteEntera;
    }

    public void cloneWith(Aspirante a) {
        super.cloneWith(a);
        this.datosCompletos = (a.getDatosCompletos());
        this.setPromedio(a.getPromedio());
        this.institucionId = a.getInstitucionId();
        this.estado = a.estado;

    }
}